package com.example.stock.service;

import com.example.stock.comm.AssetEnum;
import com.example.stock.comm.FreqEnum;
import com.example.stock.vo.DataVo;

import java.time.LocalDateTime;
import java.util.List;
import java.util.Map;

public interface IServiceRowData {

    /**
     * 查询 rowData 列表
     * @param tsCode 编号列表 二选一
     * @param tsCodes 编号列表 二选一
     * @param startTime 开始时间
     * @param endTime 结束时间
     * @param freq 周期
     * @param asset 资产 INDEX FUND STOCK CB
     * @return rowData列表 时间升序
     */
    List<DataVo> getRowDataWithFreq(String tsCode, List<String> tsCodes, LocalDateTime startTime, LocalDateTime endTime, FreqEnum freq, AssetEnum asset);

    /**
     * 查询 rowData 列表 并 分组 按时间升序
     * @param tsCodes 编号列表 二选一
     * @param startTime 开始时间
     * @param endTime 结束时间
     * @param freq 周期
     * @param asset 资产 INDEX FUND STOCK CB
     * @param dirtyQuery 是否忽略不存在的tsCode false时 可能会抛出异常
     * @param more 查询更多数据 多多少条数据
     * @return rowData 列表 并 分组 按时间升序
     */
    Map<String, List<DataVo>> getRowDataWithFreqBatchGroupByCode(List<String> tsCodes, LocalDateTime startTime, LocalDateTime endTime, FreqEnum freq, AssetEnum asset, boolean dirtyQuery, int more);

    /**
     * 查询 rowData 列表 并 分组 按时间升序
     * @param tsCodes 编号列表 二选一
     * @param startTime 开始时间
     * @param endTime 结束时间
     * @param freq 周期
     * @param asset 资产 INDEX FUND STOCK CB
     * @param dirtyQuery 是否忽略不存在的tsCode false时 可能会抛出异常
     * @param more 查询更多数据 多多少条数据
     * @return rowData 列表 并 分组 按时间升序
     */
    List<DataVo> getRowDataWithFreqOne(String tsCodes, LocalDateTime startTime, LocalDateTime endTime, FreqEnum freq, AssetEnum asset, boolean dirtyQuery, int more);


}
